#ifndef _TERM_H_
#define _TERM_H_

#include <QString>
#include <QHash>

class CategoryBlock;
class QXmlStreamWriter;

class Term
{
public:
	/// Constructor por defecto
	Term() {}

	/// Destructor
	~Term();

	/// Establece el nombre identificador del término
	void setName(const QString& name)
		{ _name = name; }

	/// Devuelve el nombre identificador del término
	QString getName() const
		{ return _name; }

	/// Añade una nueva categoría al término
	void addCategory(const QString& catName, CategoryBlock* category)
		{ _categories.insert(catName, category); }

	/// Devuelve una categoría concreta
	CategoryBlock* getCategory(const QString& catName)
		{ return _categories.contains(catName) ? _categories.value(catName) : NULL; }

	void dump(QXmlStreamWriter& writer);

private:
	QString _name; ///< Nombre del término
	QHash<QString, CategoryBlock*> _categories; ///< Hash con los distintas categorías del término
};

#endif // _TERM_H_

